function stop(){
    return false;
}
    
function number(number, decimals, dec_point, thousands_sep) {
    number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
    var n = !isFinite(+number) ? 0 : +number,
            prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
            sep = (typeof thousands_sep === 'undefined') ? '.' : thousands_sep,
            dec = (typeof dec_point === 'undefined') ? ',' : dec_point,
            s = '',
            toFixedFix = function(n, prec) {
        var k = Math.pow(10, prec);
        return '' + Math.round(n * k) / k;
    };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length > prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    // Add this number to the element as text.
    //this.text( s.join(dec) );
    return s.join(dec);
}

function contingencia (date) {
    if(fechasContingencia != null) {
        var dmy = date.getDate() + "-" + ("0" + (date.getMonth() + 1)).slice(-2) + "-" + date.getFullYear();
        if ($j.inArray(dmy, fechasContingencia) == -1) {
            return [false, ""];
        } else {
            return [true, "", "Contingencia"];
        }
    }
}

//FUNCION PARA ACTUALIZAR CLIMA
function actualizarClima() {
    $j.ajax({
        url: 'Maestros/consultarClima/actual',
        type: 'POST',
        global: false,
        success: function(data){
            $j('#modulo_Clima').html(data);
        }
    });
}

//FUNCION PARA CONSULTAR CLIMA
function consultarClima(elLink) {
    elLink = (typeof elLink == 'undefined' || elLink == '') ? 'Maestros/consultarClima/dia' : elLink;
    $j.ajax({
        url: elLink,
        type: 'POST',
        success: function(data){
            dataPicada = data.split('|||');
            ubicacionIndicada = dataPicada[0].split('====');
            ubicacion = '<div style="display:none" class="ubicacionIndicada">' + ubicacionIndicada[1] + '</div>';

            if(ubicacionIndicada[0] == 'menu') {
                $j("div#dialogoClima").parent().find(".ui-dialog-buttonpane button:contains('Menu')").button("disable");
                $j("div#dialogoClima").parent().find(".ui-dialog-buttonpane button:contains('Establecer')").button("disable");
            }
            else if(ubicacionIndicada[0] == 'dia' || (dataPicada[0] != 'nada' && dataPicada[0] != 'actual')) {
                $j("div#dialogoClima").parent().find(".ui-dialog-buttonpane button:contains('Menu')").button("enable");
                $j("div#dialogoClima").parent().find(".ui-dialog-buttonpane button:contains('Establecer')").button("enable");
            }

            $j("div#dialogoClima").css('background-color','white').html(dataPicada[1]+ubicacion);
        }
    });
}

//FUNCION PARA CAMBIAR LAS OPCIONES DEL FILTRO DE DOCUMENTOS
function cambiarOpcionesFiltro() {
    var tipoDF = $j('select#tipo_doc').val(),
        opcionesDF = '<option value="0">TODO</option>';

    if(tipoDF == 'Cotizacions') {
        opcionesDF += '<option value="1">PENDIENTE</option><option value="2">FACTURADA</option><option value="3">CADUCADA</option>';
    } else if(tipoDF == 'Facturacions') {
        opcionesDF += '<option value="1">FACTURADA</option><option value="3">DEVUELTA</option><option value="2">ANULADA</option><option value="F">FLETE</option>';
    }/* else if(tipoDF == 'Devolucions') {

    } else if(tipoDF == 'CartaOrdens') {

    } else if(tipoDF == 'NotaCreditos') {

    } else if(tipoDF == 'NotaDebitos') {

    } else if(tipoDF == 'Conciliacions') {

    }*/

    $j('#selectFD').html('');
    $j('#selectFD').append(opcionesDF);
}

//FUNCION PARA CAMBIAR EL MENSAJE DEL FILTRO DE DOCUMENTOS
function cambiarMensajeFiltro() {
    var mensajeFiltro = '',
        mensajeCabecera = 'Documentos';

    if($j('input#fechaInicio').val() != '') {
        mensajeCabecera = ($j('input#fechaInicio').val() != $j('input#fechaFin').val()) ? 'Documentos: Del ' + $j('input#fechaInicio').val() + ' al ' + $j('input#fechaFin').val() : 'Documentos: Del ' + $j('input#fechaFin').val(); 
    }

    $j('#dialogoDocumentos').dialog('option', 'title', mensajeCabecera);

    if($j('select#selectFD').val() != '' && $j('select#selectFD').val() != null) {
        mensajeFiltro +=  'Estatus: ' + $j('select#selectFD option:selected').text();
    } else {
        mensajeFiltro +=  'Estatus: TODO';   
    }

    $j('#btn_filtro').next('label').html(mensajeFiltro);
}

//FUNCION PARA REDIMENSIONAR VENTANA
function redimensionarAyuda() {
    var divTotal = $j('#dialogoAyuda').parent(),
        tamanoPantalla = $j(window).width(),
        tamanoDiv = divTotal.width(),
        totalPadding = Math.round(parseInt(divTotal.css('padding-left'))) + Math.round(parseInt(divTotal.css('padding-right'))),
        nuevaPosicionLeft;
        tamanoDiv += totalPadding;
        nuevaPosicionLeft = (tamanoPantalla - tamanoDiv) / 2;

    if(nuevaPosicionLeft < 0)
        nuevaPosicionLeft = 0;

    divTotal.css('left', nuevaPosicionLeft);
}

//FUNCION PARA EVALUAR CAMPO DE BUSQUEDA
function evaluarBusqueda(idForm, noBuscar, campo) {
    noBuscar = (typeof noBuscar == 'undefined') ? 0 : noBuscar;
    campo = (typeof campo == 'undefined') ? 'busqueda' : campo;
    var valor = $j('form#' + idForm + ' input#' + campo).val();

    if(valor.length > 0) {
        var primerosDos = valor.substring(0, 2),
            restoValor = valor.substring(2, (valor.length));

        if(primerosDos.match(/^([vVjJeEgG]{1}-)$/g) != null) {
            $j('form#' + idForm + ' input#' + campo).val($j.trim($j('form#' + idForm + ' input#' + campo).val()));
            valor = $j('form#' + idForm + ' input#' + campo).val();
            primerosDos = valor.substring(0, 2);
            restoValor = valor.substring(2, (valor.length));
            if(restoValor.length < 3) {
                $j('form#' + idForm + ' input#' + campo).addClass('error').attr('title', 'Debe ingresar al menos 5 digitos').tooltip('open');
                return false;
            } else {
                $j('form#' + idForm + ' input#' + campo).removeClass('error').removeAttr('title').tooltip('close');
                return true;
            }
        } else {
            if(valor.length < 3) {
                $j('form#' + idForm + ' input#' + campo).addClass('error').attr('title', 'Debe ingresar al menos 3 digitos').tooltip('open');
                return false;
            } else if(valor.length > 2) {
                $j('form#' + idForm + ' input#' + campo).removeClass('error').removeAttr('title').tooltip('close');
                return true;                            
            }
        }
    } else {
        if(noBuscar == 0) {
            $j('form#' + idForm + ' input#' + campo).removeClass('error').removeAttr('title').tooltip('close');
            return true;
        } else {
            $j('form#' + idForm + ' input#' + campo).addClass('error').attr('title', 'Debe ingresar al menos 3 digitos').tooltip('open');
            return false;
        }
    }
}

//FUNCION PARA EL BLOQUEO DEL SISTEMA EJECUTADAS EN X TIEMPO
function iniciarBloqueo() {
    clearTimeout(iniciarBloqueo);
    $j('#dialogoImgAraucaBloqueo').mousemove(function(){
        dialogoBloquearPantalla.dialog('open');
        clearTimeout(cerrarBloqueo);
        setTimeout(cerrarBloqueo, 8000);
    });
}

function cerrarBloqueo() {
    dialogoBloquearPantalla.dialog('close');
}

jQuery(function(){
    var divs_transparentDiv = jQuery('div#div_loader'),
        divs_transparentDivImg = jQuery('div#div_loader_img');
    divs_transparentDiv.css('display', 'none');

    //DIMENSIONES DE LA VENTANA
    jQuery.fn.__getBrowserSize = function() {
        var bodyWidth = jQuery(window).width(),
            bodyHeight = jQuery(window).height();

        return [bodyWidth, bodyHeight];
    };

    //POSICIONA LA VENTANA DE CARGA EN EL CENTRO DE LA PANTALLA
    jQuery.fn.__repositionTransparentDiv = function() {
        divs_transparentDiv.css('top', '0px');
        divs_transparentDiv.css('left', Math.max(jQuery(document.body).scrollLeft(), jQuery(window).scrollLeft()) + 'px');
        var brSize = jQuery.fn.__getBrowserSize(),
            bodyWidth = brSize[0],
            bodyHeight = brSize[1],
            padtop = (bodyHeight / 2);
        divs_transparentDiv.css('paddingTop', padtop + 'px');
        divs_transparentDiv.css('height', '2000px');
    };

    //MUESTRA LA VENTANA DE CARGA
    jQuery.fn.show_div_loader = function() {
        divs_transparentDiv.css('display', 'block');
        divs_transparentDivImg.css('display', 'block');
        var st = Math.max(jQuery(document.body).scrollTop(), jQuery(window).scrollTop()),
            sl = Math.max(jQuery(document.body).scrollLeft(), jQuery(window).scrollLeft());
        window.scrollTo(sl, st);
        setTimeout('window.scrollTo(' + sl + ',' + st + ');', 10);
        jQuery.fn.__repositionTransparentDiv();
    };

    //OCULTA LA VENTANA DE CARGA
    jQuery.fn.hide_div_loader = function() {
        divs_transparentDiv.css('display', 'none');
        divs_transparentDivImg.css('display', 'none');
    };

    //FUNCION PARA COMPLETAR UNA CADENA CON UN VALOR DEFINIDO
    jQuery.fn.str_pad = function(input, pad_length, pad_string, pad_type) {
        var half = '', pad_to_go;

        var str_pad_repeater = jQuery.fn.str_pad_repeater = function(s, len) {
            var collect = '', i;

            while (collect.length < len) {
                collect += s;
            }
            collect = collect.substr(0, len);

            return collect;
        };

        input += '';
        pad_string = pad_string !== undefined ? pad_string : ' ';

        if (pad_type !== 'STR_PAD_LEFT' && pad_type !== 'STR_PAD_RIGHT' && pad_type !== 'STR_PAD_BOTH') {
            pad_type = 'STR_PAD_LEFT';
        }
        if ((pad_to_go = pad_length - input.length) > 0) {
            if (pad_type === 'STR_PAD_LEFT') {
                input = str_pad_repeater(pad_string, pad_to_go) + input;
            } else if (pad_type === 'STR_PAD_RIGHT') {
                input = input + str_pad_repeater(pad_string, pad_to_go);
            } else if (pad_type === 'STR_PAD_BOTH') {
                half = str_pad_repeater(pad_string, Math.ceil(pad_to_go / 2));
                input = half + input + half;
                input = input.substr(0, pad_length);
            }
        }

        return input;
    };
    
    //FUNCION PARA REEMPLAZAR PUNTOS POR COMAS
    jQuery.fn.addCommas = function(nStr) {
        nStr += '';
        var x = nStr.split('.'),
            x1 = x[0],
            x2 = x.length > 1 ? ',' + x[1] : '',
            rgx = /(\d+)(\d{3})/;
        while (rgx.test(x1)) {
            x1 = x1.replace(rgx, '$1' + '.' + '$2');
        }
        var total = x1 + x2;
        if (total.indexOf(',') == -1)
            total = total + ",00";
        return total;
    };
    
    //FUNCION PARA RECORTAR NUMEROS DE DOCUMENTO
    jQuery.fn.recortar_documento = function(documento, iniA, finA, iniB) {
        iniA = (typeof iniA == 'undefined') ? 0 : parseInt(iniA),
        finA = (typeof finA == 'undefined') ? 7 : parseInt(finA),
        iniB = (typeof iniB == 'undefined') ? 2 : parseInt(iniB);

        documento = documento.substr(iniA, finA) + '...' + documento.substr(-1 * (finA + iniB))
        return documento;
    };
    
    //FUNCION PARA DIALOGO DE MENSAJES
    jQuery.fn.mensajes = function(dialogo, titulo, mensaje){
        titulo = (titulo != '') ? titulo : 'Aviso';
        mensaje = (mensaje != '') ? mensaje : 'Ha ocurrido un problema, intentelo de nuevo';
        dialogo.dialog('option', 'title', titulo);
        dialogo.html(mensaje);
        dialogo.dialog('open');
    };

    //FUNCION PARA VALIDAR PERMISOS DE USUARIO
    jQuery.fn.validarPermisoUsuario = function(modulo, opcion, perm_espe, msj){
        msj = (typeof msj != 'undefined') ? msj : '';
        perm_espe = (typeof perm_espe != 'undefined') ? perm_espe : 0;
        if((typeof permiso[modulo] != 'undefined') && (permiso[modulo][opcion]))
            return true;
        else if(perm_espe == 0) {
            dialogoPermiso = jQuery("div#dialogoPermiso").dialog({
                closeOnEscape: true,
                width: 'auto',
                buttons: [{
                    text: 'Aceptar',
                    icons: {primary: "ui-icon-check"},
                    click: function() {
                        jQuery(this).dialog('close');
                    }
                }]
            });
            dialogoPermiso.dialog('open');
            return false;
        } else if(perm_espe == 1) {
            dialogoPermiso = jQuery("div#dialogoPermiso").dialog({
                closeOnEscape: false,
                width: 'auto',
                buttons: [{
                    text: 'Recargar',
                    icons: {primary: "ui-icon-arrowrefresh-1-e"},
                    click: function() {
                        location.reload();
                    }
                }]
            });
            dialogoPermiso.html('No posees permiso para realizar: ' + msj).dialog('open');
            return false;
        }
    };
    
    //FUNCION PARA RETORNAR INFORMACION DEL DOCUMENTO
    jQuery.fn.nombreDocumento = function(tipoDoc){
        var infoDoc = new Array();
        switch(tipoDoc){
            case 'C':
                infoDoc[0] = 'COT';
                infoDoc[1] = 'Cotizaci&oacute;n';
            break;
            case 'F':
                infoDoc[0] = 'FAC';
                infoDoc[1] = 'Factura';
            break;
            case 'D':
                infoDoc[0] = 'DEV';
                infoDoc[1] = 'Devoluci&oacute;n';
            break;
            case 'A':
                infoDoc[0] = 'ANL';
                infoDoc[1] = 'Anulaci&oacute;n';
            break;
        }

        return infoDoc;
    };

    //FUNCION VACIAR MINI-FACTURA
    jQuery.fn.carritoVacio = function(){
        jQuery('div.orden.activa > ul.orden_lineas').html('<li class="orden_linea vacio">Su lista de compra est&aacute; vac&iacute;a</li>');
        jQuery('div.orden.activa > div.totalizado div.linea').addClass('vacio');
        jQuery('div.orden.activa > div.totalizado div.linea div.total span.valor').html('0.00 Bs');
    };

    //FUNCION BUSCAR CLIENTE
    jQuery.fn.buscarCliente = function(e, tipoDoc, docID, clienteID, documento, fecha, tabla){
        e.preventDefault();
        tipoDoc = (typeof tipoDoc == 'undefined') ? 'C' : tipoDoc;
        clienteID = (typeof clienteID == 'undefined') ? null : clienteID;
        ced_rif = (typeof documento == 'undefined') ? jQuery('input#ced_rif').val().toUpperCase() : documento;
        tabla = (typeof tabla == 'undefined') ? 'C' : tabla;
        cerrar = true;
        var no_repetir = true,
            sepCedRif = ced_rif.split('-');
        ced_rif = sepCedRif[0] + '-' + jQuery.fn.str_pad(sepCedRif[1], 9, '0');
        jQuery("div#tabs ul>li span.dataCliente").each(function(){
            if(this.id == ced_rif){
                no_repetir = false;
                return false;
            }
        });

        if(no_repetir){
            var dialogoNombre = "div#dialogoVerCliente_" + ced_rif,
                formu = "cliente_" + ced_rif,
                bus = jQuery("form#formClienteFiltros input#busqueda").val();
            jQuery.ajax({
                url: 'Clientes/buscar_cliente',
                type: 'POST',
                data: {
                    ced_rif: ced_rif,
                    clienteID: clienteID,
                    doc: docID,
                    tabla: tipoDoc,
                    formulario: formu,
                    tipoBusqueda: jQuery("form#busquedaCliente").data('tipoBusqueda'),
                    busqueda: bus
                },
                success: function(data){
                    dialogoBuscarCliente.dialog("close");
                    jQuery.fn.addTab(tipoDoc);
                    dialogoVerCliente = jQuery(dialogoNombre).dialog({
                        width: 900,
                        height: 500,
                        open: function(e) {
                            if(bus == '')
                                jQuery('div.divInformacionPrincipal').css('height', '365');
                        },
                        close: function(e){
                            var code = e.keyCode || e.which;
                            if(code == 27){
                                var active = jQuery("div#tabs").tabs("option", "active"),
                                id = jQuery("div#tabs ul>li a").eq(active).attr('href');
                                id = id.slice(1);
                                var panelId = jQuery("li[aria-controls='" + id + "']").remove().attr("aria-controls");
                                jQuery.fn.removerVistas(panelId, ced_rif);
                            }
                            jQuery("form#" + formu).tooltip("destroy");
                        }
                    });
                    var titulo = (ced_rif == '-undefined') ? "Listado de Clientes" : "Cliente: " + ced_rif;

                    dialogoVerCliente.dialog('option','title', titulo);
                    jQuery(dialogoNombre).html(data).dialog("open");
                    if(docID != 'undefined'){
                        jQuery(dialogoNombre).data('documentoID', docID);
                        jQuery(dialogoNombre).data('fecha', fecha);
                        jQuery(dialogoNombre).data('tabla', tabla);
                    }
                    jQuery('button.cne').button({icons: {primary: 'ui-icon-search'}});
                    jQuery('button.seniat').button({icons: {primary: 'ui-icon-search'}});
                    jQuery('button.sigesil').button({icons: {primary: 'ui-icon-search'}});
                    jQuery('button.sima').button({icons: {primary: 'ui-icon-search'}});
                    jQuery('button.logCliente').button({icons: {primary: 'ui-icon-search'}});
                    jQuery('button.huella').button({icons: {primary: 'ui-icon-contact'}});
                    jQuery('button.aceptar, button.guardar').button({icons: {primary: 'ui-icon-check'}}).focus();
                    jQuery('button.cancelar').button({icons: {primary: 'ui-icon-closethick'}});
                }
            });
        } else {
            jQuery.fn.mensajes(dialogoAvisos, '', 'El Cliente posee un Documento abierto');
            jQuery("button#buscarC, button#buscarR").button({disabled: false});
        }
    };

    //FUNCION REMOVER VISTAS DE CLIENTE
    jQuery.fn.removerVistas = function(panel, ced_rif){
        jQuery("div#" + panel).remove();
        jQuery("div#orden_" + ced_rif).remove();
        tabs.tabs("refresh");
        jQuery('div#cotizacion_' + ced_rif).remove();
        jQuery('div#factura_' + ced_rif).remove();
        jQuery('div#imprimir_' + ced_rif).remove();
        jQuery('div#dialogoVerCliente_' + ced_rif).remove();
        jQuery('div#dialogoFormaPago_' + ced_rif).remove();
        jQuery('div#dialogoObservacion_' + ced_rif).remove();
        jQuery('div#dialogoSerial_' + ced_rif).remove();
        jQuery('div#dialogoCaptaHuellas_' + ced_rif).remove();
    };

    //FUNCION PARA REMOVER ACCION CERRAR AL IMPRIMIR
    jQuery.fn.removerEvento = function(){
        dialogoAvisos.dialog('option', 'close', null);
    };

    //FUNCION PARA AGREGAR PESTAÑAS
    jQuery.fn.addTab = function(tipoDoc) {
        var tipoMostrarTab = (tipoDoc == 'D') ? 'DEVOLUCION' : 'FACTURA',
            label = ced_rif || "Pestana " + tabCounter,
            id = "tabs-" + tabCounter,
            li = jQuery(tabTemplate.replace(/#\{href\}/g, "#" + id).replace(/#\{label\}/g, label).replace(/#\{tipo\}/g, tipoDoc)),
            div = jQuery(ordenPlantilla.replace(/#\{id\}/g, "orden_" + ced_rif)),
            cotizacionDiv = jQuery(cotizacionPlantilla.replace(/#\{id\}/g, "cotizacion_" + label)),
            facturaDiv = jQuery(facturaPlantilla.replace(/#\{id\}/g, "factura_" + label).replace(/#\{tipoMostrarTab\}/g, tipoMostrarTab)),
            imprimirDiv = jQuery(imprimirPlantilla.replace(/#\{id\}/g, "imprimir_" + label)),
            clienteDiv = jQuery(clientePlantilla.replace(/#\{id\}/g, "dialogoVerCliente_" + label)),
            formaPagoDiv = jQuery(formaPagoPlantilla.replace(/#\{id\}/g, "dialogoFormaPago_" + label).replace(/#\{formPago\}/g, "pago_" + label)),
            obsDiv = jQuery(observacionPlantilla.replace(/#\{id\}/g, "dialogoObservacion_" + label).replace(/#\{formObs\}/g, "obs_" + label)),
            serialDiv = jQuery(serialPlantilla.replace(/#\{id\}/g, "dialogoSerial_" + label).replace(/#\{formSer\}/g, "ser_" + label)),
            captaHuellaDiv = jQuery(captaHuellaPlantilla.replace(/#\{id\}/g, "dialogoCaptaHuellas_" + label).replace(/#\{formCapHue\}/g, "cap_hue_" + label).replace(/#\{cant_huellas\}/g, "cant_hue_" + label)),
            d = document.createElement('div');
            tabContentHtml = jQuery(d).addClass('content-container activa').css('display', 'block');

        jQuery('div.factura_scroll').each(function() {
            jQuery(this).find('div.orden').removeClass('activa');
        }).append(div);

        tabs.find("ul.ui-tabs-nav").append(li);
        tabs.append("<div id='" + id + "'></div>");
        jQuery('div#' + id).append(tabContentHtml).css({overflow: 'auto', height: '100%'});
        jQuery('div#contenido_der').append(cotizacionDiv)
                                .append(facturaDiv)
                                .append(imprimirDiv)
                                .append(clienteDiv)
                                .append(formaPagoDiv)
                                .append(obsDiv)
                                .append(serialDiv)
                                .append(captaHuellaDiv);
        jQuery('button.volver').button({icons: {primary: 'ui-icon-arrowthick-1-w'}});
        jQuery('button.validarDoc').button({icons: {primary: 'ui-icon-disk'}});
        jQuery('button.observacion').button({icons: {primary: 'ui-icon-document'}});
        jQuery('button.serial').button({icons: {primary: 'ui-icon-clipboard'}});
        jQuery('button.cerrar').button({icons: {primary: 'ui-icon-closethick'}});
        jQuery('button.btn_agregar').button({icons: {primary: 'ui-icon-plus'}, text: false});
        jQuery('button.deshabilitado').button({icons: {primary: 'ui-icon-plus'}, disabled: true});
        tabs.tabs("refresh");
        tabs.tabs("option", "active", (jQuery('div#tabs table tr td ul li a').length - 1));
        tabCounter++;

        //DIALOGO FORMAS DE PAGO
        jQuery("div#dialogoFormaPago_" + label).dialog({
            width: 800,
            height: 520
        });

        //DIALOGO OBSERVACION
        jQuery("div#dialogoObservacion_" + label).dialog({
            width: 400,
            height: 250
        });

        //DIALOGO SERIALES
        jQuery("div#dialogoSerial_" + label).dialog({
            width: 600,
            height: 'auto'
        });

        //DIALOGO CAPTA HUELLAS
        jQuery("div#dialogoCaptaHuellas_" + label).dialog({
            width: 890,
            height: 280
        });
    };

    //FUNCION PARA CALCULOS POR (COTIZACION, FACTURA)
    jQuery.fn.calcularFactura = function(mostrar){
        var active = jQuery("div#tabs").tabs("option", "active"),
            idFinal = jQuery("div#tabs ul>li a").eq(active).text(),
            tipoDoc = jQuery("div#tabs ul>li span#" + idFinal).attr('tipo'),
            div = jQuery('div.factura_scroll'), height = jQuery('div.orden.activa').height(),
            mostrar = mostrar || 1, cantbs = 0,
            cantpro,
            subTotal = 0,
            total = 0,
            impuesto = 0,
            base = 0,
            idFlete = 0,
            baseFlete = 0,
            cantFlete = 0,
            ivaFlete = 0,
            totalFlete = 0;

        jQuery("div.orden.activa > ul.orden_lineas li.orderline").each(function() {
            if(this.id != '1'){
                if(jQuery(this).hasClass('selected') && jQuery(this).hasClass('advertencia'))
                    jQuery(this).removeClass('advertencia')
                cantbs = jQuery(this).find('span.price').text().split(' ');
                base = jQuery(this).find('span.price').attr('base');
                impuesto = parseFloat(jQuery(this).find('span.price').attr('impuesto'));
                cantpro = (jQuery(this).find('ul.info-list > li.info:first em:first').length > 0) ? (parseFloat(jQuery(this).find('ul.info-list > li.info:first em:first').text().replace(/\./g, "").replace(/\,/g, ".")) * 1 == 0) ? 1 : parseFloat(jQuery(this).find('ul.info-list > li.info:first em:first').text().replace(/\./g, "").replace(/\,/g, ".")) : 1;
                cantbspro = (jQuery.trim(jQuery(this).find('ul.info-list > li.info:first').text()).split(' '));
                cantbs = (typeof cantbspro[3] != 'undefined') ? cantbspro[3] : base;
                cantbs = parseFloat(parseFloat(cantbs.replace(/\./g, "").replace(/\,/g, ".")).toFixed(2));
                subTotal = parseFloat(parseFloat((cantbs * cantpro) * (((1 * (impuesto / 100)) + 1))).toFixed(2));
                jQuery(this).find('span.price').html(jQuery.fn.addCommas(subTotal) + ' Bs');
                total += subTotal;

                if(parseFloat(jQuery(this).find('span.price').attr('flete').replace(/\,/g, ".")) > 0){
                    idFlete = jQuery(this).find('span.price').attr('id_flete');
                    cantFlete += cantpro;
                    baseFlete = jQuery(this).find('span.price').attr('flete');
                    ivaFlete = jQuery(this).find('span.price').attr('iva_flete');
                    totalFlete = parseFloat(parseFloat((parseFloat(baseFlete.replace(/\,/g, ".")) * cantFlete) * (((1 * (ivaFlete / 100)) + 1))).toFixed(2));
                }
            }
        });

        if(mostrar == 1){
            div.animate({scrollTop: height}, 500);
            if(cantFlete > 0){
                var mostrarImpuesto = (ivaFlete > 0) ? ' | I.V.A.: <em>' + ivaFlete + '%</em>' : '';
                var fletePlantilla = '<li id="' + idFlete + '" class="orderline no_escribir">\n\
                                <span class="product-name">MANEJO LOG&Iacute;STICO</span>\n\
                                <span class="price" base="' + baseFlete + '" medida="1" existencia="0" impuesto="' + ivaFlete + '" cantidad="1">' + jQuery.fn.addCommas(totalFlete) + ' Bs</span>';

                if (cantFlete > 1) {
                    fletePlantilla += '<ul class="info-list">\n\
                                        <li class="info">\n\
                                            <em>' + cantFlete + '</em> Unidad(es) a ' + jQuery.fn.addCommas(parseFloat(baseFlete.replace(/\,/g, ".")).toFixed(2)) + ' Bs / Unidad(es)\n\
                                            ' + mostrarImpuesto + '</li>\n\
                                    </ul>';
                } else
                    fletePlantilla += '<ul class="info-list"><li class="info"></li></ul>';

                fletePlantilla += '</li>';

                if(jQuery("div.orden.activa > ul.orden_lineas > li.no_escribir").length == 0)
                    jQuery('div.orden.activa > ul.orden_lineas').append(fletePlantilla);
                else{
                    if(cantFlete > 1)
                        jQuery("div.orden.activa > ul.orden_lineas > li.no_escribir > ul.info-list > li.info:first").html('<em>' + cantFlete + '</em> Unidad(es) a ' + jQuery.fn.addCommas(parseFloat(baseFlete.replace(/\,/g, ".")).toFixed(2)) + ' Bs / Unidad(es)' + mostrarImpuesto);
                    else
                        jQuery("div.orden.activa > ul.orden_lineas > li.no_escribir > ul.info-list > li.info:first").html('');
                    jQuery("div.orden.activa > ul.orden_lineas > li.no_escribir > span.price").html(jQuery.fn.addCommas(totalFlete) + ' Bs');
                }
            }else{
                if(jQuery("div.orden.activa > ul.orden_lineas > li.no_escribir").length > 0)
                    jQuery("div.orden.activa > ul.orden_lineas > li.no_escribir").remove();
            }
            total += totalFlete;
            jQuery('div.orden.activa > div.totalizado > div.linea > div.entry > span.valor').html(jQuery.fn.addCommas(parseFloat(total).toFixed(2)) + ' Bs');
        }else{
            total += totalFlete;
            return jQuery.fn.addCommas(parseFloat(total).toFixed(2));
        }
    };

    //FUNCION PARA INTERCAMBIAR VISTAS
    jQuery.fn.intercambiar = function(vista, validarCH) {
        var active = jQuery("div#tabs").tabs("option", "active"),
            id = jQuery("div#tabs ul>li a").eq(active).attr('href'),
            ced_rif = jQuery("div#tabs ul>li a").eq(active).text(),
            vistaPestana = jQuery("div#tabs ul>li a").eq(active).attr('href'),
            vistaDoc = jQuery("div#tabs ul>li a").eq(active).parent().find('span').prop('id'),
            boton = jQuery("div#tabs ul>li span#" + ced_rif).attr('tipo'),
            cerrarEscape = true,
            vistaVacia = vista;

        if(vista == '' || vista == 'nada') {
            vista = (jQuery(vistaPestana).find('div.screen').hasClass('cot')) ? '#cotizacion_' : '#factura_';
            jQuery('button.btn_accion.cotizar, button.btn_accion.facturar, button.btn_accion.devolucion').button({ disabled: false });
            jQuery('button.btn_accion').removeClass('ui-state-focus');
            jQuery('div' + id + ' div.pos-actionbar ul.pos-actionbar-button-list li.button:last').addClass('oculto');
        } else {
            jQuery('button.btn_accion.cotizar, button.btn_accion.facturar, button.btn_accion.devolucion').button('disable');
            jQuery.fn.cargarInfoCliente(vista, vistaDoc);

            if(boton == 'D')
                cerrarEscape = false;

            //DIALOGO OBSERVACION
            var dialogoObservacion = jQuery("div#dialogoObservacion_" + ced_rif).dialog({
                closeOnEscape: cerrarEscape,
                open: function(){
                    jQuery('form#obs_' + ced_rif).tooltip({
                        show: true,
                        hide: true
                    });
                },
                close: function(){
                    jQuery('form#obs_' + ced_rif).tooltip("destroy");
                },
                buttons: [{
                    text: 'Aceptar',
                    icons: {primary: "ui-icon-check"},
                    click: function() {
                        if((boton == 'D') && (jQuery(this).find('textarea#observacion').val() == '')) {
                            jQuery.fn.mensajes(dialogoAvisos, 'Aviso', 'El campo observacion no puede estar vacio');
                        } else {
                            var elemento = jQuery(vistaPestana + ' div#print-screen div.print-container div.print-body div.print-cabecera');
                            elemento.find('span#obsDoc').html(jQuery('form#obs_' + vistaDoc).find('textarea#observacion').val().toUpperCase());
                            jQuery(this).dialog("close");
                        }
                    }
                }]
            });

            if(validarCH) {
                if(boton != 'F')
                    dialogoObservacion.dialog('open');
                else
                    dialogoValidarHuella.data({ ced_rif: ced_rif, vistaPestana: vistaPestana, vistaDoc: vistaDoc }).dialog('open');
            } else
                dialogoObservacion.dialog('open');
        }
        
        var copy_to = jQuery(vistaPestana).children().clone(true);
        var copy_from = jQuery(vista + vistaDoc).children().clone(true);
        jQuery(vistaPestana).html(copy_from);
        jQuery(vista + vistaDoc).html(copy_to);

        if(vistaVacia != 'nada') {
            if(boton == 'F') {
                var tieneSerial = 0,
                    mostrarBotonSerial = false,
                    cantpro = 1,
                    nro,
                    listaSeriales = "<table width='100%'>\n\
                                    <tr>\n\
                                        <th width='1%'>ARTICULO</th>\n\
                                        <th width='23%'>DESCRIPCION</th>\n\
                                        <th width='1%'>CANTIDAD</th>\n\
                                    </tr>";
                jQuery("div.orden.activa > ul.orden_lineas li.orderline").each(function() {
                    idpro = jQuery(this).prop('id');
                    codigopro = (!jQuery(this).hasClass('no_escribir')) ? jQuery(this).find('span.product-name').text().slice(1).slice(0, 18) : '';
                    nombrepro = (!jQuery(this).hasClass('no_escribir')) ? jQuery(this).find('span.product-name').text().slice(21) : jQuery(this).find('span.product-name').text();
                    if(jQuery(this).find('ul.info-list > li.info:first em:first').length > 0){
                        if (parseFloat(jQuery(this).find('ul.info-list > li.info:first em:first').text().replace(/\./g, "").replace(/\,/g, ".")) * 1 != 0){
                            cantpro = parseFloat(jQuery(this).find('ul.info-list > li.info:first em:first').text().replace(/\./g, "").replace(/\,/g, ".").replace(/\./g, ","));
                        }
                    }

                    tieneSerial = parseInt(jQuery(this).find('span.price').attr('serial'));

                    if(tieneSerial == 1 && idpro != 1) {
                        mostrarBotonSerial = true;
                        listaSeriales += "<tr>\n\
                                            <td class='centro'>" + codigopro + "</td>\n\
                                            <td>" + nombrepro + "</td>\n\
                                            <td class='centro'>" + jQuery.fn.str_pad(cantpro, 2, '0') + "</td>\n\
                                           </tr>";
                        for(i = 0; i < cantpro; i++) {
                            nro = (i + 1);
                            listaSeriales += campoSerial.replace(/#\{idSerial\}/g, idpro).replace(/#\{idSerial2\}/g, idpro + "_" + nro).replace(/#\{nro\}/g, nro);
                        }
                    }
                });

                if(mostrarBotonSerial) {
                    jQuery('div' + id + ' div.pos-actionbar ul.pos-actionbar-button-list li.button:last').removeClass('oculto');
                    jQuery('div#dialogoSerial_' + ced_rif + ' form#ser_' + ced_rif).empty().append(listaSeriales);
                    //DIALOGO DE SERIALES
                    jQuery('div#dialogoSerial_' + ced_rif).dialog({
                        open: function(){
                            jQuery('form#ser_' + ced_rif).tooltip({
                                show: true,
                                hide: true
                            });
                        },
                        close: function(){
                            jQuery('form#ser_' + ced_rif).tooltip("destroy");
                        },
                        buttons: [{
                            text: 'Aceptar',
                            icons: {primary: "ui-icon-check"},
                            click: function(e) {
                                //VALIDACION DEL FORMULARIO DE SERIALES
                                var formSeriales = jQuery('form#ser_' + ced_rif).serialize();
                                jQuery('form#ser_' + ced_rif).validate();
                                jQuery('form#ser_' + ced_rif + ' input').rules("remove");
                                jQuery('form#ser_' + ced_rif + ' input').each(function () {
                                    if(jQuery(this).is(':visible'))
                                        jQuery(this).rules('add', { required: true });
                                });

                                if (jQuery('form#ser_' + ced_rif).valid()){
                                    if(jQuery("div.orden.activa > ul.orden_lineas li.orderline").length > 0){
                                        var arrayProductos = new Array();
                                        var j = 0;
                                        jQuery("div.orden.activa > ul.orden_lineas li.orderline").each(function() {
                                            idpro = this.id;
                                            arrayProductos[j] = idpro;
                                            j++;
                                        });
                                    }

                                    jQuery.ajax({
                                        url: 'Facturacions/validarSeriales',
                                        type: 'POST',
                                        async: false,
                                        data: formSeriales + '&productos=' + JSON.stringify(arrayProductos),
                                        success: function(data){
                                            if(data == '1') {
                                                jQuery('div#dialogoSerial_' + ced_rif).data('validado', 1).dialog("close");
                                                jQuery('button.btn_accion.validarFac').trigger('click');
                                            } else {
                                                jQuery('div#dialogoSerial_' + ced_rif).data('validado', 0);
                                                var html = '<table width="100%" border="1" class="tabla_mensajes">\n\
                                                                <tr>\n\
                                                                    <th>Material Nro</th>\n\
                                                                    <th>Serial Nro</th>\n\
                                                                    <th>Error</th>\n\
                                                                </tr>';
                                                jQuery.each(jQuery.parseJSON(data), function(index, value) {
                                                    jQuery.each(value, function(index2, value2) {
                                                        html += "<tr><td>" + index + "</td>\n\
                                                                <td>" + value2.posicion + "</td>\n\
                                                                <td>Duplicado</td></tr>";
                                                    });
                                                });
                                                html += '</table>';
                                                jQuery.fn.mensajes(dialogoAvisos, '', html);
                                            }
                                        }
                                    });
                                }
                                e.preventDefault();
                            }
                        }]
                    });
                }
            } else
                jQuery('div' + id + ' div.pos-actionbar ul.pos-actionbar-button-list li.button:last').addClass('oculto');

            jQuery.fn.cargarFactura();
        }
    };

    //CARGAR INFORMACION DEL CLIENTE EN DOCUMENTO
    jQuery.fn.cargarInfoCliente = function(vista, vistaDoc){
        var elemento = jQuery(vista + vistaDoc + ' div#print-screen div.print-container div.print-body div.print-cabecera'),
            formCliente = jQuery('form#cliente_' + vistaDoc),
            cedRif = vistaDoc.replace('-', '');
        elemento.find('span#fecDoc').html(formCliente.find('input#fecha_cliente_' + cedRif).val());
        elemento.find('span#cliNomDoc').html(formCliente.find('input#nombre_cliente_' + cedRif).val());
        elemento.find('span#cliDocDoc').html(cedRif);
        elemento.find('span#cliDirDoc').html(formCliente.find('input#direccion_cliente_' + cedRif).val());
        elemento.find('span#cliCarDoc').html(cedRif + ' - ' + formCliente.find('input#nombre_cliente_' + cedRif).val());
        elemento.find('span#cliTerDoc').html(formCliente.find('select#tipodeventa_cliente_' + cedRif + ' option:selected').text());
        elemento.find('span#obsDoc').html(jQuery('form#obs_' + vistaDoc).find('textarea#observacion').val().toUpperCase());
    };

    //FUNCION PARA CARGAR VISTA DE FACTURA
    jQuery.fn.cargarFactura = function(){
        var active = jQuery("div#tabs").tabs("option", "active"),
            vistaPestana = jQuery("div#tabs ul>li a").eq(active).attr('href'),
            cantbs = 0, 
            cantpro, 
            listaProductos = '', 
            subTotalProducto = 0, 
            subTotal = 0, 
            total = 0, 
            precioTotalProducto = 0, 
            porcDesc = 0, 
            excentoIva = '(E)',
            precioBase = 0,
            base = 0,
            iva = 0;
        if(jQuery("div.orden.activa > ul.orden_lineas li.orderline").length > 0){
            listaProductos = "<table width='100%'>\n\
                                <tr>\n\
                                    <th width='1%'>ARTICULO</th>\n\
                                    <th width='1%'>CANTIDAD</th>\n\
                                    <th width='23%'>DESCRIPCION</th>\n\
                                    <th width='1%'>&nbsp;</th>\n\
                                    <th width='1%'>PRECIO VENTA</th>\n\
                                    <th width='10%'>%IMP</th>\n\
                                    <th width='10%'>PRECIO NETO</th>\n\
                                    <th width='10%'>PRECIO TOTAL</th>\n\
                                </tr>";
            jQuery("div.orden.activa > ul.orden_lineas li.orderline").each(function() {
                cantpro = 0;
                codigopro = (!jQuery(this).hasClass('no_escribir')) ? jQuery(this).find('span.product-name').text().slice(1).slice(0, 18) : '';
                nombrepro = (!jQuery(this).hasClass('no_escribir')) ? jQuery(this).find('span.product-name').text().slice(21) : jQuery(this).find('span.product-name').text();
                cantbs = jQuery(this).find('span.price').text().split(' ');
                precioBase = jQuery(this).find('span.price').attr('base');
                porcDesc = tempIva = parseFloat(jQuery(this).find('span.price').attr('impuesto'));
                excentoIva = (tempIva == 0) ? excentoIva : '';
                if(jQuery(this).find('ul.info-list > li.info:first em:first').length > 0){
                    if (parseFloat(jQuery(this).find('ul.info-list > li.info:first em:first').text().replace(/\./g, "").replace(/\,/g, ".")) * 1 == 0){
                        cantpro = 1;
                        jQuery(this).find('ul.info-list > li.info:first em:first').html(cantpro);
                    }else
                        cantpro = parseFloat(jQuery(this).find('ul.info-list > li.info:first em:first').text().replace(/\./g, "").replace(/\,/g, ".").replace(/\./g, ","));
                }else
                    cantpro = 1;
                cantbspro = (jQuery.trim(jQuery(this).find('ul.info-list > li.info:first').text()).split(' '));
                cantbs = (typeof cantbspro[3] != 'undefined') ? cantbspro[3] : precioBase;
                cantbs = parseFloat(parseFloat(cantbs.replace(/\./g, "").replace(/\,/g, ".")).toFixed(2));
                subTotalProducto = parseFloat(parseFloat(cantbs * cantpro).toFixed(2));
                precioTotalProducto = parseFloat(parseFloat(subTotalProducto * (1 + (porcDesc / 100))).toFixed(2));
                subTotal += subTotalProducto;
                total += precioTotalProducto;
                iva += parseFloat(parseFloat(subTotalProducto * (porcDesc / 100)).toFixed(2));

                base += (excentoIva == '') ? subTotalProducto : 0;
                listaProductos += "<tr>\n\
                                    <td class='celda_centro'>" + codigopro + "</td>\n\
                                    <td class='celda_centro'>" + jQuery.fn.str_pad(cantpro, 2, '0') + "</td>\n\
                                    <td>" + nombrepro + "</td>\n\
                                    <td class='celda_centro'>" + excentoIva + "</td>\n\
                                    <td class='celda_derecha'>" + jQuery.fn.addCommas(cantbs) + "</td>\n\
                                    <td class='celda_derecha'>" + jQuery.fn.addCommas(parseFloat(porcDesc).toFixed(2)) + "</td>\n\
                                    <td class='celda_derecha'>" + jQuery.fn.addCommas(subTotalProducto) + "</td>\n\
                                    <td class='celda_derecha'>" + jQuery.fn.addCommas(precioTotalProducto) + "</td>\n\
                                   </tr>";
            });

            listaProductos += "</table>";
        }
        jQuery(vistaPestana + ' div#print-screen div.print-container div.print-cuerpo').html(listaProductos);
        jQuery(vistaPestana + ' div#print-screen div.print-container div.print-pie div.monto-baseiva').html('BASE ' + jQuery.fn.addCommas(parseFloat(base).toFixed(2)));
        jQuery(vistaPestana + ' div#print-screen div.print-container div.print-pie div.monto-subtotal').html(jQuery.fn.addCommas(parseFloat(subTotal).toFixed(2)));
        jQuery(vistaPestana + ' div#print-screen div.print-container div.print-pie div.monto-iva').html('I.V.A: ' + jQuery.fn.addCommas(parseFloat(iva).toFixed(2)));
        jQuery(vistaPestana + ' div#print-screen div.print-container div.print-pie div.monto-total').html('TOTAL A PAGAR: ' + jQuery.fn.addCommas(parseFloat(total).toFixed(2)));
    };
    
    //FUNCION PARA VALIDAR DOCUMENTOS
    jQuery.fn.validarDocumento = function(data){
        var active = jQuery("div#tabs").tabs("option", "active"),
            id = jQuery("div#tabs ul>li a").eq(active).attr('href'),
            id = id.slice(1),
            ced_rif = jQuery("div#tabs ul>li a").eq(active).text(),
            tipoDoc = jQuery("div#tabs ul>li span#" + ced_rif).attr('tipo'),
            panelId = jQuery("li[aria-controls='" + id + "']").attr("aria-controls"),
            data = data.split('_'),
            cerEsc = true,
            preEsc = '',
            numConDoc = '-';
        if(data[0] == '1') {
            switch(tipoDoc){
                case 'D':
                case 'F':
                    if(tipoDoc == 'F') {
                        var idTrPadre = jQuery('div#dialogoVerCliente_' + ced_rif).data('documentoID');
                        jQuery('div#dialogoDocumentos tr#' + idTrPadre).remove();
                    }
                    //NO PERMITE CERRAR LA VENTANA PARA FAC Y DEV
                    cerEsc = false;
                break;
                case 'C':
                    preEsc = '<button class="btn_cerrar">Cancelar</button>';
                break;
            }

            if(typeof data[3] != 'undefined')
                numConDoc = data[3];

            jQuery('div#dialogoVerCliente_' + ced_rif).append('<span class="idDoc">' + data[1] + '</span><span class="numDoc">' + data[2] + '</span>' + '<span class="numConDoc">' + numConDoc + '</span>');
            jQuery.fn.mensajes(dialogoImpresion, 'Presione', '<button class="btn_imp">Imprimir</button>' + preEsc);
            dialogoImpresion.dialog('option', 'closeOnEscape', cerEsc);
            dialogoImpresion.dialog({
                close: function() {
                    jQuery("li[aria-controls='" + id + "']").remove();
                    jQuery.fn.removerVistas(panelId, ced_rif);
                    jQuery.fn.removerEvento();
                    //ACTUALIZA EL LISTADO DE DOCUMENTOS (SI MOLESTA, SE DEBE QUITAR)
                    jQuery('button#btn_buscar').trigger('click');
                }
            });
        } else if(data[0] == '2') {
            var msjError = (data[1] != '') ? data[1] : 'Ocurri&oacute; un error al guardar, favor intente de nuevo';
            jQuery.fn.mensajes(dialogoAvisos, 'Error', msjError);
            jQuery(this).button({disabled: false});
        } else
            jQuery.fn.problemaMaterial(data);
    };

    //FUNCION PARA MOSTRAR PROBLEMAS CON MATERIALES AL (COTIZAR, FACTURAR, DEVOLUCIONES)
    jQuery.fn.problemaMaterial = function(data){
        var html = '<table width="100%" border="1" class="tabla_mensajes">\n\
                        <tr>\n\
                            <th>Producto</th>\n\
                            <th>Precio</th>\n\
                            <th>Cantidad</th>\n\
                            <th>Existencia</th>\n\
                            <th>Error</th>\n\
                            <th>Soluci&oacute;n</th>\n\
                        </tr>',
            solucion = '';
        jQuery.each(jQuery.parseJSON(data), function(index, value) {
            var error = 0;
            if(parseInt(value.precio) <= 0){
                solucion = 'Se elimina por precio inv&aacute;lido'
                error = 1;
            }else if(value.existencia <= 0){
                solucion = 'Se elimina por no haber existencia'
                error = 1;
            }else if(value.cantidad > value.existencia){
                solucion = 'Se actualiza la cantidad a la existencia<br/>m&aacute;xima disponible';
                error = 2;
            }else if(value.vendido > value.maximo){
                value.existencia = value.maximo;
                if(value.existencia == 0) {
                    solucion = 'Se elimina por no haber existencia';
                    error = 1;
                } else {
                    solucion = 'Se actualiza la cantidad a la existencia<br/>m&aacute;xima permitida';
                    error = 3;
                }
            }
            html += "<tr><td>" + value.nombre + "</td>\n\
                        <td>" + value.precio + "</td>\n\
                        <td>" + value.cantidad + "</td>\n\
                        <td>" + value.existencia + "</td>\n\
                        <td>" + value.error + "</td>\n\
                        <td>" + solucion + "</td></tr>";
            jQuery("div.orden.activa > ul.orden_lineas li.orderline[id='" + index + "']").addClass('advertencia');
            if(error == 1)
                jQuery("div.orden.activa > ul.orden_lineas li.orderline[id='" + index + "']").remove();
            else if(error == 2){
                jQuery("div.orden.activa > ul.orden_lineas li.orderline[id='" + index + "'] span.price").attr('existencia', value.existencia);
                jQuery("div.orden.activa > ul.orden_lineas li.orderline[id='" + index + "'] ul.info-list li.info:first em:first").html(value.existencia);
            }else if(error == 3){
                jQuery("div.orden.activa > ul.orden_lineas li.orderline[id='" + index + "'] span.price").attr('existencia', value.maximo);
                jQuery("div.orden.activa > ul.orden_lineas li.orderline[id='" + index + "'] ul.info-list li.info:first em:first").html(value.maximo);
            }
        });
        html += '</table>';
        jQuery.fn.calcularFactura();
        jQuery.fn.cargarFactura();
        jQuery.fn.mensajes(dialogoAvisos, '', html);
    };

    //FUNCION PARA VALIDAR PERMISO DE MODIFICAR DOCUMENTO
    jQuery.fn.validarPermisoTeclado = function(doc, tipo){
        var permite = false,
            accion = '';
        switch(tipo) {
            case 'm':
            default:
                accion = 'MODIFICAR';
            break;
            case 'e':
                accion = 'ELIMINAR';
            break;
            case 'i':
                accion = 'IMPRIMIR';
            break;
        }

        switch(doc) {
            case 'C':
            default:
                if(tipo == 'i')
                    permite = jQuery.fn.validarPermisoUsuario('COTIZACION', accion)
                else
                    permite = true;
            break;
            case 'F':
                permite = jQuery.fn.validarPermisoUsuario('FACTURACION', accion)
            break;
            case 'D':
                permite = jQuery.fn.validarPermisoUsuario('DEVOLUCION', accion)
            break;
        }
        return permite;
    };

    //FUNCION PARA MOSTRAR DOCUMENTOS EN COLA
    jQuery.fn.listaDocumentosImprimir = function(listado){
        var tabla = '', centrar = 'left';
        tabla = '<table class="tabla-dialogo">';
        tabla += '<tr><th>Documento</th><th>Número Control</th><th>Estado</th><th>Accion</th></tr>';

        jQuery(listado).each(function(indice, valor) {
            var datos = JSON.stringify(valor);
            if (valor.num_con != '-')
                valor.num_con = jQuery.fn.recortar_documento(valor.num_con);
            else
                centrar = 'center';

            switch(valor.estatus) {
                case 1:
                    valor.estatus = 'En Cola';
                break;
                case 2:
                    valor.estatus = 'Imprimiendo';
                break;
                case 3:
                    valor.estatus = 'Impreso';
                break;
                case 4:
                    valor.estatus = 'Error';
                break;
            }
            tabla += "<tr>\n\
                        <td>" + jQuery.fn.recortar_documento(valor.documento) + "</td>\n\
                        <td align='" + centrar + "'>" + valor.num_con + "</td>\n\
                        <td>" + valor.estatus + "</td>\n\
                        <td align='center'><button id='docImp' class='btn_dialogo docImp' data-datos='"+datos+"'>Imprimir</button></td>\n\
                    </tr>";
        });
        tabla += '</table>';
        return tabla;
    };

    //FUNCION PARA GENERAR COLA DE IMPRESION
    jQuery.fn.colaImpresion = function(data) {
        var datos = jQuery.parseJSON(data),
            tabla = jQuery.fn.listaDocumentosImprimir(datos['Detalle']),
            active = $j("div#tabs").tabs("option", "active"),
            idFinal = $j("div#tabs ul>li a").eq(active).text(),
            tipoDoc = $j("div#tabs ul>li span#" + idFinal).attr('tipo'),
            valor = { tipo: '', documento: 'todo' };

        //POSICIONAR DIALOGO AL CENTRO
        dialogoImpresion.data({ datos: data }).html("<span id='listaImp'></span><br/>"+tabla).dialog({ title: 'En cola...', position: { my: "center", at: "center" } });
        jQuery('button.docImp').button({ icons: {primary: 'ui-icon-print'}, text: false, disabled: true });

        switch(tipoDoc){
            case 'C':
                valor.tipo = 'COT';
            break;
            case 'F':
                valor.tipo = 'FAC';
            break;
            case 'D':
                valor.tipo = 'DEV';
            break;
            case 'A':
                valor.tipo = 'ANL';
            break;
            default:
                valor.tipo = 'REP';
            break;
        }
        $j.fn.impresionConsultar(valor, '', '', 'G');
        /*dialogoImpresion.find('button.docImp').each(function(indice) {
            if(indice > 0)
                jQuery(this).button('disable');
        });*/
    };

    //FUNCION PARA DESCARGAR EL DOCUMENTO
    jQuery.fn.impresionDescargar = function(datos, recortado, boton, tipoImp, imprimir) {
        imprimir = (typeof imprimir != 'undefined') ? tipoImp : true;
        dialogoImpresion.find('span#listaImp').html('Documento: ' + recortado + '<br/>');
        dialogoImpresion.dialog({ title: 'Verificando Descarga...', position: { my: "center", at: "center" } });
        datos.tipo = (tipoImp == 'REP') ? tipoImp : datos.tipo;
        if(!("idCaja" in datos))
            datos.idCaja = null;
        if(!("fecha" in datos))
            datos.fecha = null;
        jQuery.ajax({
            url: 'http://127.0.0.1:8888/cgi-bin/imprimir.py',
            type: 'POST',
            async: false,
            global: false,
            data: {
                accion: 'descargar',
                id: datos.id,
                url: datos.ip,
                tipo: datos.tipo,
                nombre: datos.documento,
                idCaja: datos.idCaja,
                fecha: datos.fecha
            },
            success: function(data){
                intervaloDesc = setInterval(function(){
                    jQuery.fn.impresionVerificar(datos, recortado, boton, imprimir);
                }, 1000);
            }
        });
    };

    //FUNCION PARA VERIFICAR LA DESCARGA DEL DOCUMENTO
    jQuery.fn.impresionVerificar = function(datos, recortado, boton, imprimir) {
        dialogoImpresion.dialog('option', 'title', 'Descargando...');
        jQuery.ajax({
            url: 'http://127.0.0.1:8888/cgi-bin/imprimir.py',
            type: 'POST',
            async: false,
            global: false,
            data: { accion: 'verificar', tipo: datos.tipo },
            success: function(data){
                var separar = data.split("\n"),
                    estado = separar[0].split(": ");
                estado = estado[1];
                separar = separar[1] + '<br/>' + separar[2];
                
                dialogoImpresion.find('span#listaImp').html('Documento: ' + recortado + '<br/>' + separar + '<br/>');
                dialogoImpresion.dialog({position: { my: "center", at: "center" }});
                
                if(estado === 'Listo') {
                    clearInterval(intervaloDesc);
                    if(imprimir === true)
                        jQuery.fn.impresionEnviar(datos, recortado, boton);
                    else
                        jQuery.fn.impresionVisualizar(datos, recortado, imprimir);
                }
            }
        });
    };

    //FUNCION PARA ENVIAR A IMPRIMIR EL DOCUMENTO
    jQuery.fn.impresionEnviar = function(datos, recortado, boton) {
        dialogoImpresion.dialog('option', 'title', 'Enviando a la impresora...');
        jQuery.ajax({
            url: 'http://127.0.0.1:8888/cgi-bin/imprimir.py',
            type: 'POST',
            async: false,
            global: false,
            data: { accion: 'imprimir', id: datos.id, tipo: datos.tipo, nombre: datos.documento },
            success: function(data){
                data = data.replace(/\n/g, '');
                switch(data) {
                    case '0':
                        dialogoImpresion.dialog('close');
                        jQuery.fn.mensajes(dialogoAvisos, '', 'No se pudo Imprimir<br/>Favor intentelo por el modulo de Reimpresion');
                        boton.button({'disabled': false});
                    break;
                    case '1':
                        intervaloEnv = setInterval(function(){
                            jQuery.fn.impresionConsultar(datos, recortado, boton, 'I');
                        }, 1000);
                    break;
                    case '2':
                        dialogoImpresion.dialog('close');
                        jQuery.fn.mensajes(dialogoAvisos, '', 'Impresora NO configurada');
                    break;
                }
            }
        });
    };

    //FUNCION PARA VISUALIZAR EL DOCUMENTO
    jQuery.fn.impresionVisualizar = function(datos, recortado, imprimir) {
        dialogoImpresion.dialog({title: 'Visualizando...', position: { my: "center", at: "center" }});
        dialogoImpresion.find('span#listaImp').html('Visualizando el Documento: ' + recortado + '<br/>Para continuar debe cerrar el Documento<br/><br/><button class="btn_cerrar_vis">Cerrar</button>');
        jQuery('button.btn_cerrar_vis').button({icons: {primary: 'ui-icon-cancel'}});
        jQuery.ajax({
            url: 'http://127.0.0.1:8888/cgi-bin/imprimir.py',
            type: 'POST',
            async: false,
            global: false,
            data: { accion: 'visualizar', id: datos.id, tipo: datos.tipo, nombre: datos.documento, imprimir: imprimir },
            success: function(data){
                dialogoImpresion.dialog('close');
            }
        });
    };

    //FUNCION PARA VALIDAR LA IMPRESION DEL DOCUMENTO
    jQuery.fn.impresionConsultar = function(datos, recortado, boton, consulta) {
        var active = jQuery("div#tabs").tabs("option", "active"),
            ced_rif = jQuery("div#tabs ul>li a").eq(active).text(),
            tipoDoc = jQuery("div#tabs ul>li span#" + ced_rif).attr('tipo'),
            url = 'Impresions/consultar';
        dialogoImpresion.dialog('option', 'title', 'Verificando Impresora...');
        consulta = (typeof consulta == 'undefined') ? 'G' : consulta;
        if(consulta == 'I')
            url = 'http://127.0.0.1:8888/cgi-bin/imprimir.py';
        jQuery.ajax({
            url: url,
            type: 'POST',
            async: false,
            global: false,
            data: { accion: 'estatus', tipo: datos.tipo, nombre: datos.documento },
            success: function(data){
                var cerrar = false;
                data = data.replace(/\n/g, '');
                if(consulta == 'I') {
                    switch(data) {
                        case '0':
                            boton.parent().prev().text('Imprimiendo');
                        break;
                        case '1':
                            boton.parent().prev().text('En cola');
                        break;
                        case '2':
                            clearInterval(intervaloEnv);
                            dialogoImpresion.dialog('option', 'title', 'Impreso!');
                            var cantBtnImp = boton.parents("table").find(".docImp"),
                                proximo = cantBtnImp.filter(":gt(" + cantBtnImp.index(boton) + ")").first(),
                                actualizar = { id: datos.id, impresion: 3, pausa: 0 };
                            boton.parent().prev().text('Impreso');
                            boton.button({icons: {primary: "ui-icon-check"}});
                            proximo.button({ disabled: false });
                            $j.fn.impresionActualizar(actualizar);
                            cerrar = true;
                        break;
                        case '3':
                        case '4':
                            clearInterval(intervaloEnv);
                            dialogoImpresion.dialog('close');
                            var msjError = 'Impresora NO configurada',
                                actualizar = { id: datos.id, impresion: 4, pausa: 1 };
                            $j.fn.impresionActualizar(actualizar);
                            if(data == '3')
                                msjError = 'No se pudo Imprimir<br/>Favor intentelo por el modulo de Reimpresion';
                            jQuery.fn.mensajes(dialogoAvisos, '', msjError);
                        break;
                    }

                    dialogoImpresion.find('span#listaImp').html('Documento: ' + recortado + ' Impreso<br/>');
                    dialogoImpresion.dialog({position: { my: "center", at: "center" }});
                    dialogoImpresion.find('button.docImp').each(function() {
                        if(jQuery(this).is(':enabled'))
                            cerrar = false;
                    });

                    if(cerrar) {
                        dialogoImpresion.dialog('close');
                        delete window.noReintentar;
                        jQuery.fn.mensajes(dialogoAvisos, '', 'Todos los documentos impresos exitosamente');
                        if (dialogoImprimirDetalle.dialog('isOpen'))
                            dialogoImprimirDetalle.dialog('close');
                    }
                } else {
                    switch(data) {
                        case '0':
                            jQuery('button.btn_imp').button({ disabled: false });
                            jQuery('button.docImp:first').button({ disabled: false });
                            if(jQuery.inArray(tipoDoc, ['F', 'D']) != -1)
                                jQuery('button.btn_imp').trigger('click');
                            if (dialogoAvisos.dialog('isOpen'))
                                dialogoAvisos.dialog('close');
                        break;
                        case '-1':
                            jQuery.fn.mensajes(dialogoAvisos, '', 'Impresora No Configurada!');
                        break;
                        default:
                            jQuery.fn.mensajes(dialogoAvisos, '', 'Impresora Ocupada...<br/>Nº de Documentos en cola: ' + data);
                            setTimeout(function(){
                                jQuery.fn.impresionConsultar(datos, recortado, boton, 'G');
                            }, 1000);
                        break;
                    }
                }
            }
        });
    };
    
    //FUNCION PARA ACTUALIZAR LA TABLA DE IMPRESION
    jQuery.fn.impresionActualizar = function(datos) {
        jQuery.ajax({
            url: 'Impresions/actualizarDocumento',
            type: 'POST',
            async: false,
            data: { id: datos.id, impresion: datos.impresion, pausa: datos.pausa },
            success: function(){}
        });
    };

    //FUNCION PARA CREAR DIALOGO DE FORMAS DE PAGO
    jQuery.fn.dialogoPago = function(ced_rif, listaNotas, listaCartas, tipo) {
        tipo = (typeof tipo == 'undefined') ? 1 : 2;

        if(listaNotas == '')
            jQuery('div#dialogoFormaPago_' + ced_rif + ' select#forma_pago option[value="3_3_0"]').remove();
        if(listaCartas == '')
            jQuery('div#dialogoFormaPago_' + ced_rif + ' select#forma_pago option[value="4_3_0"]').remove();

        var guarda = false, datos = '',
            dialogoFormaPago = jQuery("div#dialogoFormaPago_" + ced_rif).dialog({
                close: function(){
                    jQuery('form#pago_' + ced_rif).tooltip("destroy");
                    jQuery('form#pago_' + ced_rif + ' input#cant').val(0);

                    if(tipo == 2)
                        jQuery("div#dialogoFormaPago_" + ced_rif).remove();
                },
                open: function(){
                    var cant = jQuery('div#dialogoFormaPago_' + ced_rif + ' input#cant'),
                        montoPagar = parseFloat(jQuery('div#dialogoFormaPago_' + ced_rif + ' span.payment-due-total').text().replace(/\./g, "").replace(/\,/g, ".")),
                        montoPagado = 0,
                        montoRestante = 0,
                        pagoCompleto = false;

                    jQuery('form#pago_' + ced_rif + ' tbody.listaPago tr').each(function(){
                        var quitarRemovible = jQuery(this).find('button#btn_quitar');
                        quitarRemovible.button({ disabled: false }).trigger('click');
                    });

                    if(listaNotas != ''){
                        listaNotas = jQuery.parseJSON(listaNotas);
                        jQuery.each(listaNotas, function(indice, valor){
                            var tipoPago = tipoPagoNcrCor,
                                idCampo = ced_rif + cant.val();
                            tipoPago = jQuery(tipoPago.replace(/#\{tipoPago\}/g, 'NOTA CREDITO').
                                            replace(/#\{idForma\}/g, 'forma_pago_' + idCampo).
                                            replace(/#\{elem\}/g, '03 - NOTA CREDITO|3_3_0').
                                            replace(/#\{idBanco\}/g, 'banco_' + idCampo).
                                            replace(/#\{idRef\}/g, 'referencia_' + idCampo).
                                            replace(/#\{idMonto\}/g, 'monto_' + idCampo));
                            var listaFinal = '';
                            dialogoFormaPago.closest('div').find('tbody.listaPago').append(tipoPago);
                            listaFinal += '<option value="' + indice + '">' + valor + '</option>';
                            jQuery('select#referencia_' + idCampo).empty().append(listaFinal).trigger('focus').trigger('change');
                            jQuery('input#forma_pago_' + idCampo).val(3);
                            jQuery('input#monto_' + idCampo).prop('readonly', true);
                            cant.val(parseInt(cant.val()) + 1);
                            montoPagado = 0;
                            jQuery('div#dialogoFormaPago_' + ced_rif + ' input.monto').each(function(){
                                var valor = (jQuery(this).val() != '') ? parseFloat(jQuery(this).val().replace(/\,/g, ".")) : parseFloat(0);
                                montoPagado += valor;
                            });
                            montoRestante = montoPagar - parseFloat(montoPagado.toFixed(2));
                            if(montoRestante == 0) {
                                pagoCompleto = true;
                                return false;
                            }
                        });
                        jQuery('button.btn_quitar').button({disabled: true, icons: {primary: 'ui-icon-minus'}, text: false});
                    }

                    if(pagoCompleto == false) {
                        if(listaCartas != ''){
                            listaCartas = jQuery.parseJSON(listaCartas);
                            jQuery.each(listaCartas, function(indice, valor){
                                var tipoPago = tipoPagoNcrCor,
                                    idCampo = ced_rif + cant.val();
                                tipoPago = jQuery(tipoPago.replace(/#\{tipoPago\}/g, 'CARTA ORDEN').
                                                replace(/#\{idForma\}/g, 'forma_pago_' + idCampo).
                                                replace(/#\{elem\}/g, '04 - CARTA ORDEN|4_3_0').
                                                replace(/#\{idBanco\}/g, 'banco_' + idCampo).
                                                replace(/#\{idRef\}/g, 'referencia_' + idCampo).
                                                replace(/#\{idMonto\}/g, 'monto_' + idCampo));
                                var listaFinal = '';
                                dialogoFormaPago.closest('div').find('tbody.listaPago').append(tipoPago);
                                listaFinal += '<option value="' + indice + '">' + valor + '</option>';
                                jQuery('select#referencia_' + idCampo).empty().append(listaFinal).trigger('focus').trigger('change');
                                jQuery('input#forma_pago_' + idCampo).val(4);
                                jQuery('input#monto_' + idCampo).prop('readonly', true);
                                dialogoFormaPago.closest('div').find('tbody.listaPago button.btn_quitar:last').button({disabled: false, icons: {primary: 'ui-icon-minus'}, text: false});
                                cant.val(parseInt(cant.val()) + 1);
                                montoPagado = 0;
                                jQuery('div#dialogoFormaPago_' + ced_rif + ' input.monto').each(function(){
                                    var valor = (jQuery(this).val() != '') ? parseFloat(jQuery(this).val().replace(/\,/g, ".")) : parseFloat(0);
                                    montoPagado += valor;
                                });
                                montoRestante = montoPagar - parseFloat(montoPagado.toFixed(2));
                                if(montoRestante == 0) {
                                    pagoCompleto = true;
                                    return false;
                                }
                            });
                        }
                    }

                    jQuery('form#pago_' + ced_rif + ' select.referencia').each(function(){
                        if(this.value != '') {
                            var id = this.id,
                                valor = this.value;
                            jQuery('form#pago_' + ced_rif + ' select.referencia').each(function(){
                                if(id != this.id)
                                    jQuery('option[value="' + valor + '"]', this).remove();
                            });
                        }
                    });

                    jQuery('div#dialogoFormaPago_' + ced_rif + ' input.monto:first').trigger('keyup');
                    if((montoRestante == 0) && (montoPagado > 0))
                        jQuery('button#btn_agregar').button('disable');
                    else
                        jQuery('button#btn_agregar').button({ disabled: false });
                },
                buttons: [{
                    text: 'Aceptar',
                    icons: {primary: "ui-icon-check"},
                    click: function(e) {
                        var montoIngresado = 0,
                            cambio = 0,
                            montoPagar = parseFloat(jQuery('div#dialogoFormaPago_' + ced_rif + ' span.payment-due-total').text().replace(/\./g, "").replace(/\,/g, ".")),
                            montoFalta = 0,
                            formPago = jQuery('form#pago_' + ced_rif).serialize();
                        mensaje = 'Debe agregar al menos una forma de pago';
                        jQuery('form#pago_' + ced_rif + ' input.monto, form#pago_' + ced_rif + ' .referencia').each(function(){
                            if(jQuery(this).val() != '' && jQuery(this).val() != null){
                                if(jQuery(this).hasClass('monto'))
                                    montoIngresado += parseFloat(jQuery(this).val().replace(/\,/g, "."));
                            } else {
                                montoIngresado = 0;
                                mensaje = 'Debe completar los campos en blanco o eliminarlos';
                                jQuery(this).focus();
                                return false;
                            }
                        });
                        montoIngresado = parseFloat(parseFloat(montoIngresado).toFixed(2));

                        //VERIFICAR PORQUE DA ERROR
                        if(montoIngresado >= montoPagar) {
                            if(jQuery('form#pago_' + ced_rif + ' input.referencia:visible').length > 0) {
                                jQuery.ajax({
                                    url: 'Facturacions/verificarNumRef',
                                    type: 'POST',
                                    async: false,
                                    data: formPago,
                                    success: function(data){
                                        datos = data;
                                        if(datos == '1')
                                            guarda = true;
                                    }
                                });

                                if(datos != '1') {
                                    mensaje = '<table width="100%" border="1" class="tabla_mensajes">\n\
                                                    <tr>\n\
                                                        <th>Forma de Pago Nro</th>\n\
                                                        <th>Número de Referencia</th>\n\
                                                        <th>Error</th>\n\
                                                    </tr>';
                                    jQuery.each(jQuery.parseJSON(datos), function(index, value) {
                                        mensaje += "<tr><td>" + value.numero + "</td>\n\
                                                    <td>" + value.num_ref + "</td>\n\
                                                    <td>Duplicado</td></tr>";
                                    });
                                    mensaje += '</table>';
                                }
                            } else
                                guarda = true;
                        } else {
                            montoFalta = (montoPagar - montoIngresado);
                            if(montoIngresado > 0)
                                mensaje = 'Restan: ' + jQuery.fn.addCommas(parseFloat(montoFalta).toFixed(2)) + ' Bs';
                        }

                        jQuery('form#pago_' + ced_rif).validate();
                        jQuery('form#pago_' + ced_rif + ' input.monto, form#pago_' + ced_rif + ' select.banco, form#pago_' + ced_rif + ' .referencia').rules("remove");
                        jQuery('form#pago_' + ced_rif + ' input.monto, form#pago_' + ced_rif + ' select.banco, form#pago_' + ced_rif + ' .referencia').each(function () {
                            if(jQuery(this).is(':visible')){
                                if(jQuery(this).hasClass('monto'))
                                    jQuery(this).rules('add', { required: true, min: 0.01, messages: {min: 'Monto Inválido'} });
                                else// if(jQuery(this).hasClass('referencia'))
                                    jQuery(this).rules('add', { required: true/*, minlength: 4, messages: {minlength: 'Mínimo 4 dígitos'}*/ });
                                /*else
                                    jQuery(this).rules('add', { required: true });*/
                            }
                        });

                        if (jQuery('form#pago_' + ced_rif).valid()) {
                            if(guarda) {
                                guarda = false, datos = '';
                                cambio = parseFloat(parseFloat(montoIngresado - montoPagar).toFixed(2));

                                if(jQuery("div.orden.activa > ul.orden_lineas li.orderline").length > 0) {
                                    var arrayProductos = new Array();
                                    var arrayCantidades = new Array();
                                    var j = 0;
                                    jQuery("div.orden.activa > ul.orden_lineas li.orderline").each(function() {
                                        var idpro = this.id,
                                            cantpro = 0;
                                        if(jQuery(this).find('ul.info-list > li.info:first em:first').length > 0) {
                                            if (jQuery(this).find('ul.info-list > li.info:first em:first').text().replace(/\./g, "").replace(/\,/g, ".") == '0.') {
                                                cantpro = 1;
                                                jQuery(this).find('ul.info-list > li.info:first em:first').html(cantpro);
                                            } else
                                                cantpro = jQuery(this).find('ul.info-list > li.info:first em:first').text().replace(/\./g, "").replace(/\,/g, ".");
                                        } else
                                            cantpro = 1;

                                        arrayProductos[j] = idpro;
                                        arrayCantidades[j] = cantpro;
                                        j++;
                                    });
                                }

                                if(tipo == 1) {
                                    var formValidar = jQuery('div#dialogoVerCliente_' + ced_rif).find('form').serialize(),
                                        formObs = jQuery('form#obs_' + ced_rif).find('textarea#observacion').val(),
                                        formSer = jQuery('div#dialogoSerial_' + ced_rif).find('form').serialize();
                                    jQuery.ajax({
                                        url: 'Facturacions/guardar',
                                        type: 'POST',
                                        async: false,
                                        data: formPago + '&observacion=' + formObs + '&' + formSer + '&' + formValidar + '&montoPagar=' + montoPagar + '&cambio=' + cambio + '&productos=' + JSON.stringify(arrayProductos) + '&cantidades=' + JSON.stringify(arrayCantidades) + '&idCot=' + jQuery('div#dialogoVerCliente_' + ced_rif).data('documentoID'),
                                        success: function(data){
                                            jQuery.fn.validarDocumento(data);
                                        }
                                    });
                                } else if(tipo == 2) {
                                    jQuery('form#formCobranza').find(":input").filter(function(){ return !this.value; }).attr("disabled", "disabled");
                                    var formCobranza = jQuery('form#formCobranza').serialize();
                                    jQuery.ajax({
                                        url: 'Cobranzas/guardar',
                                        type: 'POST',
                                        async: false,
                                        data: formPago + '&' + formCobranza + '&montoPagar=' + montoPagar + '&cambio=' + cambio,
                                        success: function(data){
                                            data = data.split('_');
                                            if(data[0] == '1') {
                                                jQuery.fn.mensajes(dialogoAvisos, '', 'Cobranza registrada exitosamente');
                                                jQuery("div#dialogoFormaPago_" + ced_rif).dialog("close");
                                                jQuery('button#btn_buscarCobranza').button({ disabled: false }).trigger('click');
                                            } else {
                                                var msjError = (data[1] != '') ? data[1] : 'Ocurri&oacute; un error al guardar, favor intente de nuevo';
                                                jQuery.fn.mensajes(dialogoAvisos, '', msjError);
                                            }
                                        }
                                    });
                                } else
                                    jQuery.fn.mensajes(dialogoAvisos, '', 'VERIFICAR LA FUNCION jQuery.fn.dialogoPago, LA VARIABLE tipo');
                            } else
                                jQuery.fn.mensajes(dialogoAvisos, '', mensaje);
                        }
                        e.preventDefault();
                    }
                }, {
                    text: 'Cancelar',
                    icons: {primary: "ui-icon-closethick"},
                    click: function() {
                        jQuery(this).dialog("close");
                    }
                }]
            });

        jQuery('div#dialogoFormaPago_' + ced_rif + ' input.monto:first').trigger('keyup');
        dialogoFormaPago.dialog('open');
    };
});